package com.joven.product.service.business.domain.model.entity;

import com.joven.product.service.business.domain.model.entity.id.DomainObjId;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import java.time.LocalDateTime;

/**
 * <p>
 * 基于数据库存储技术的基础实体
 * </p>
 *
 * @author Joven
 * @date 2022-01-06 18:21:27
 */
@Getter
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class BaseDomainObj<T extends DomainObjId> {

    /**
     * 唯一标识
     */
    private T id;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 创建人
     */
    private Long createUser;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 更新人
     */
    private Long updateUser;

    /**
     * 乐观锁版本号
     */
    private Integer version;
}
